using Sinacor.Infra.Service.Common;
using System;
using Sinacor.Infra.Service.Validation;

namespace Sinacor.Servico.Bovespa.Contabil.BusinessEntity
{
	public class DespesaNota : BaseBusinessEntity 
    {

		private BusinessEntity.Enum.TipoBaseDespesa? _baseDespesa;
		private string _codigo;
        private BusinessEntity.EventoContabil _eventoContabil;
		private bool _incideIrrf;
		private decimal _percentualDespesa;
		private DateTime _pregaoFinal;
		private DateTime _pregaoInicial;
		private decimal _valorMaximo;
		private decimal _valorMinimo;

		public DespesaNota(){}

		public DespesaNota(BusinessEntity.Enum.TipoBaseDespesa? baseDespesa, string codigo,
            BusinessEntity.EventoContabil eventoContabil, bool incideIrrf, decimal percentualDespesa,
		    DateTime pregaoFinal, DateTime pregaoInicial, decimal valorMaximo, decimal valorMinimo)
        {
            _baseDespesa = baseDespesa;
            _codigo = codigo;
            _eventoContabil = eventoContabil;
            _incideIrrf = incideIrrf;
            _percentualDespesa = percentualDespesa;
            _pregaoFinal = pregaoFinal;
            _pregaoInicial = pregaoInicial;
            _valorMaximo = valorMaximo;
            _valorMinimo = valorMinimo;
        }

		public BusinessEntity.Enum.TipoBaseDespesa? BaseDespesa
        {
			get{
                return _baseDespesa;
			}
			set{
                _baseDespesa = value;
			}
		}

		[NotEmpty(109223, true)]
		public string Codigo{
			get{
				return _codigo;
			}
			set{
				_codigo = value;
			}
		}

        public BusinessEntity.EventoContabil EventoContabil
        {
			get{
				return _eventoContabil;
			}
			set{
				_eventoContabil = value;
			}
		}

		public bool IncideIrrf{
			get{
				return _incideIrrf;
			}
			set{
				_incideIrrf = value;
			}
		}

		public decimal PercentualDespesa{
			get{
				return _percentualDespesa;
			}
			set{
				_percentualDespesa = value;
			}
		}

		public DateTime PregaoFinal{
			get{
				return _pregaoFinal;
			}
			set{
				_pregaoFinal = value;
			}
		}

		public DateTime PregaoInicial{
			get{
				return _pregaoInicial;
			}
			set{
				_pregaoInicial = value;
			}
		}

		public decimal ValorMaximo{
			get{
				return _valorMaximo;
			}
			set{
				_valorMaximo = value;
			}
		}

		public decimal ValorMinimo{
			get{
				return _valorMinimo;
			}
			set{
				_valorMinimo = value;
			}
		}
	}
}